import entity from "@/lang/tpl/entity.js";
import mapper from "@/lang/tpl/mapper.js";
import service from "@/lang/tpl/service.js";
import controller from "@/lang/tpl/controller.js";
import mybatis from "@/lang/tpl/mybatis.js";

const escape = (unsafe) => {
    return unsafe
        .replace(/&/g, "&amp;")
        .replace(/</g, "&lt;")
        .replace(/>/g, "&gt;")
        .replace(/"/g, "&quot;")
        .replace(/'/g, "&#039;");
}

const attach = {
    "daoPackage": "cn.seaboot.admin.reverse.dao",
    "beanPackage": "cn.seaboot.admin.reverse.bean",
    "servicePackage": "cn.seaboot.admin.reverse.service",
    "controllerPackage": "cn.seaboot.admin.reverse.web"
}

/**
 * 代码生成器
 *
 * 通过 javascript 引擎生成代码，简单地通过字符串拼接，生成所需的字符串。
 *
 * 相比于模版引擎，javascript 可以兼容任何复杂的业务，可以进行非常精细的格式微调。
 *
 * 业务中，如果需要很复杂的逻辑处理，推荐使用这种方式。
 *
 * 注意：这些代码会放到 java 中执行，受到版本限制，只能支持 ES5 以下的语法。
 */
export default {
    entity: (map) => {
        map.attach = attach;
        return escape(entity(map));
    },
    mapper: (map) => {
        map.attach = attach;
        return escape(mapper(map));
    },
    mybatis: (map) => {
        map.attach = attach;
        return escape(mybatis(map));
    },
    service: (map) => {
        map.attach = attach;
        return escape(service(map));
    },
    controller: (map) => {
        map.attach = attach;
        return escape(controller(map));
    },
}



